package es.ucm.fdi.bdt.controller.interfaces.management;

/**
 * Gestión de usuarios
 */
public interface IUserManager {

	/**
	 *  Funci�n: Alta de usuario.
		ID: Usu01
		Prioridad: Alta.
		Estabilidad: Alta.
		Descripci�n: Dar de alta un nuevo usuario en el sistema.
		Entrada: Datos del nuevo usuario: id de usuario, nombre de usuario, clave p�blica,  correo, tel�fono, direcci�n.
		Salida: Mensaje de confirmaci�n de alta realizada.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red y el archivo de cuentas.txt.
		Acci�n: El nodo del usuario descarga el fichero cuentas.txt de la red estructurada P2P, genera una clave p�blica y una clave privada, modifica cuentas.txt con los datos de entrada y lo sube actualizado a la red estructurada P2P.
		Precondici�n: Datos de nuevo usuario v�lidos y usuario no existente en el sistema.
		Postcondici�n: Nuevo usuario introducido en el archivo de cuentas.txt.
	 * 
	 * @param datosNuevos
	 * @return 
	 */
	Object altaDeUsuario(Object datosNuevos);
	
	/**
	 * Funci�n: Baja de usuario.
		ID: Usu02
		Prioridad: Alta.
		Estabilidad: Alta.
		Descripci�n: Dar de baja un nuevo usuario en el sistema.
		Entrada: ID del usuario.
		Salida: Mensaje de confirmaci�n de baja realizada.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red y el archivo/s de usuarios del sistema cuentas.txt.
		Acci�n: El sistema elimina un usuario borrandolo del fichero de cuentas.txt. Se elimina el archivo con la clave primaria.
		Precondici�n: Que el ID del usuario exista en cuentas.txt.
		Postcondici�n: Eliminaci�n del usuario en el  archivo/s de usuarios del sistema.
		
	 * @param identificadorUsuario
	 * @return
	 */
	Object bajaDeUsuario(Object identificadorUsuario);

	/**
	 *  Funci�n: Editar datos de usuario.
		ID: Usu03
		Prioridad: Baja.
		Estabilidad: Alta.
		Descripci�n: Editar datos de un usuario en el sistema.
		Entrada: Datos del usuario: nombre de usuario, clave p�blica,  correo, tel�fono, direcci�n.
		Salida: Mensaje de confirmaci�n de modificaci�n realizada.
		Origen: Interfaz gr�fica.
		Destino: Sistema.
		Necesita: Estar conectado a la red y el archivo de cuentas.txt.
		Acci�n: El nodo del usuario descarga el fichero cuentas.txt de la red estructurada P2P, modifica cuentas.txt con los datos de entrada y lo sube actualizado a la red estructurada P2P.
		Precondici�n: Datos de usuario v�lidos y usuario existente en el sistema.
		Postcondici�n: Usuario modificado en el archivo de cuentas.txt.
	 * 
	 * @param datosNuevos
	 * @return
	 */
	Object editarDatosDeUsuario(Object datosNuevos);
	
}
